home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Graphics / PostScript / Pencil / pencilControlProcDefinitions.ps < prev    next >
Encoding:
Text File  |  1995-06-12  |  3.1 KB  |  124 lines

  1. % control procedure definitions
  2. % these procedures are not defined when printing
  3.  
  4. % drawing the controlpoints & the selected one (bsz=controlpt size, bszh=bsz/2)
  5. /gencontrol {
  6.     0 0 0 setrgbcolor
  7.     0 1 nctrl 1 sub { /i exch def
  8.     ctrl i 2 mul get bszh sub ctrl i 2 mul 1 add get bszh sub
  9.     bsz bsz rectfill
  10.     } for
  11.     cctrl 0 ge {
  12.     cctrl nctrl lt {
  13.     1 0 0 setrgbcolor
  14.     ctrl cctrl 2 mul get bsz sub ctrl cctrl 2 mul 1 add get  bsz bsz rectfill
  15.     } if
  16.     } if
  17. } def
  18. % test whether controlpoint has been selected
  19. /genselpt {
  20.     -1
  21.     0 1 nctrl 1 sub { /i exch def
  22.     ctrl i 2 mul get ctrl i 2 mul 1 add get bsz 0 360 arc closepath mmx mmy infill { newpath pop i exit } if
  23.     newpath } for
  24. } def
  25. % test whether filled path has been selected
  26. /gsel {
  27. newpath cp
  28. mmx mmy infill
  29. newpath
  30. } def
  31. % test whether stroked path has been selected
  32. /gstsel {
  33. newpath cp linw 3 gt { linw setlinewidth } { 4 setlinewidth } ifelse 
  34. mmx mmy instroke
  35. newpath
  36. } def
  37.  
  38. % control hull drawing procedures for all path types
  39. /circlecontrol { gencontrol } def
  40. /charPcontrol { gencontrol } def
  41. /funcPcontrol { gencontrol 0 setgray 0 setlinewidth 
  42. nctrl 2 ge {
  43. /ox ctrl 0 get def /oy ctrl 1 get def
  44. /px ctrl 2 get def /py ctrl 3 get def
  45. ox oy moveto ox py lineto stroke
  46. px oy moveto px py lineto stroke
  47. (Helvetica) findfont 10 scalefont setfont
  48. ox 5 add oy moveto (Region Left Border) show
  49. px 5 add py moveto (Region Right Border) show
  50. nctrl 3 ge {
  51. ctrl 4 get 5 add ctrl 5 get moveto (Origin) show
  52. nctrl 4 ge {
  53. ctrl 6 get 5 add ctrl 7 get moveto (Point [1,1]) show
  54. } if
  55. } if
  56. } if
  57. } def
  58. /hermitecontrol {
  59.     .5 setgray
  60.     0 setlinewidth
  61.     0 2 nctrl 2 sub{ /i exch 2 mul def
  62.         ctrl i get ctrl i 1 add get moveto
  63.         ctrl i 2 add get ctrl i 3 add get lineto stroke
  64.     } for
  65.     gencontrol
  66. } def
  67. /hermiteOcontrol {
  68.     hermitecontrol
  69. } def
  70.  
  71. % Bezier curve (2 rulers per point)
  72.  
  73. /beziercontrol {
  74.     nctrl 3 div cvi 3 mul nctrl eq {
  75.         .5 setgray
  76.         0 setlinewidth
  77.         ctrl nctrl 1 sub 2 mul get ctrl nctrl 1 sub 2 mul 1 add get moveto
  78.         ctrl 0 get ctrl 1 get lineto stroke
  79.     } if
  80.     bezierOcontrol
  81. } def
  82.  
  83. /bezierOcontrol {
  84.     .5 setgray
  85.     0 setlinewidth
  86.     0 3 nctrl 4 sub { /i exch 2 mul def
  87.         ctrl i get ctrl i 1 add get moveto
  88.         ctrl i 2 add get ctrl i 3 add get lineto
  89.         ctrl i 4 add get ctrl i 5 add get moveto
  90.         ctrl i 6 add get ctrl i 7 add get lineto
  91.         stroke
  92.     } for
  93.     nctrl 1 sub 3 div cvi 3 mul 1 add nctrl ne {
  94.     /N nctrl 1 sub 3 div cvi 3 mul def
  95.     ctrl N 2 mul get ctrl N 2 mul 1 add get moveto
  96.     ctrl N 2 mul 2 add get ctrl N 2 mul 3 add get lineto stroke
  97.     } if
  98.     gencontrol
  99. } def
  100.  
  101. /rectcontrol { gencontrol } def
  102. /rectwincontrol { gencontrol } def
  103. /polygoncontrol { gencontrol } def
  104. /polygonOcontrol { gencontrol } def
  105. /arcPcontrol { gencontrol } def
  106. /arcPOcontrol { gencontrol } def
  107. /rrectcontrol { gencontrol } def
  108. /drawFSSel { gsel } def
  109. /drawSSel { gstsel } def
  110. /drawFSel { gsel } def
  111. /draw3DSel { gsel } def
  112. /draw3DShadowSel { gsel } def
  113. /drawFSShadowSel { gsel } def
  114. /drawSShadowSel { gstsel } def
  115. /drawFShadowSel { gsel } def
  116. /drawVSel { gsel } def
  117. /drawVDSel { gsel } def
  118. /drawVSSel { gsel } def
  119. /drawV3DSel { gsel } def
  120. /drawV3D2Sel { gsel } def
  121. /drawN3DSel { gsel } def
  122. /drawSFSel { gsel } def
  123.  
  124.